package com.itheima.tlias84.config;

import com.itheima.tlias84.Interceptor.LoginInterceptor;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * spring配置类：一般用来配置拦截器，跨域配置等等配置
 * @Configuration 是配置类的特化注解  组合了@Component
 *
 * 过滤器(Filter) 与 拦截器(Interceptor)的区别
 * 相同点：执行都在controller(servlet)之前
 * 不同点：1.技术提供方：过滤器Filter是Servlet容器提供的，拦截器Interceptor是Spring提供的
 *       2.执行顺序：先执行过滤器，再执行拦截器
 *       3.拦截粒度：过滤器过滤粒度粗 ->编码转换，时间格式转换
 *                 拦截器拦截粒度细 ->登录认证，接口日志记录
 *
 *
 *    如果继承 extends WebMvcConfigurationSupport  springboot会自己处理
 *    如果想实现使用自定义的时间格式 implements WebMvcConfigurer
 */
//@Configuration
//public class WebMvcConfig extends WebMvcConfigurationSupport {
public class WebMvcConfig implements WebMvcConfigurer {

    @Resource
    LoginInterceptor loginInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //添加拦截器
        registry.addInterceptor(loginInterceptor)
                //添加拦截路径
                .addPathPatterns("/**")
                //排除登录路径
                .excludePathPatterns("/login","/yml");
    }
}
